package com.my.adminapi.map.feign;

import com.my.adminapi.map.domin.dto.LocationSearchReqDTO;
import com.my.adminapi.map.domin.dto.PlaceSearchReqDTO;
import com.my.adminapi.map.domin.vo.RegionCityVO;
import com.my.adminapi.map.domin.vo.RegionVO;
import com.my.adminapi.map.domin.vo.SearchPoiVo;
import com.my.mycommoncore.domain.dto.BasePageDTO;
import com.my.mycommondomain.domian.R;
import com.my.mycommondomain.domian.vo.BasePageVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

@FeignClient(contextId = "mapFeignClient" ,value = "my-admin")
public interface MapFeignClient {
    /**
     * 查询寻所有城市列表
     * @return 城市列表
     */
    @GetMapping("/map/city_list")
    R<List<RegionVO>> getCityList();

    /**
     * 分组查询列别 A-Z
     * @return 城市列表
     */
    @GetMapping("/map/pinyin_city_list")
    R<Map<String,List<RegionVO>>> getRegionPinyinList();

    /**
     *  查询子区域
     * @param parentId 父级id
     * @return 子区域列表
     */
    @GetMapping("/map/children_city_list")
    R<List<RegionVO>> ChildrenRegionList(@RequestParam Long parentId);

    /**
     * 获取热门城市列表
     * @return 热门城市列表
     */
    @GetMapping("/map/city_hot_list")
    R<List<RegionVO>> cityHotList();

    /**
     * 根据关键字获取pio
     * @param placeSearchReqDTO 入参
     * @return pio列表
     */
    @PostMapping("/map/search")
    R<BasePageVO<SearchPoiVo>> searchSuggestOnMap(@RequestBody PlaceSearchReqDTO placeSearchReqDTO);

    /**
     * 根据经纬度查询城市信息
     * @param locationSearchReqDTO 入参
     * @return 城市
     */
    @PostMapping("/map/locate_city_by_location")
    R<RegionCityVO> locateCityByLocation(@RequestBody LocationSearchReqDTO locationSearchReqDTO);



}
